(1) Field of the Invention
The present invention relates to a device including a key store and a mechanism for controlling access to the key store. The present invention also relates to a method for controlling access to a key store.
(2) Description of Related Art
Cryptography is used in a number of different software applications in order to prevent unauthorised third parties gaining access to sensitive or private material. For example, if an email message contains sensitive information, the sender can encrypt the email using an encryption key. Only the authorised recipient, with the correct decryption key, is able to decrypt and view the contents of the email.
Another use of encryption keys is in the field of digital rights management (DRM). Audio files may be encrypted by the vendor of the music so that only those with the correct key can play the music. Typically, anyone purchasing the music legally will be provided with the key necessary for decrypting the audio file.
The keys which are used in cryptographic techniques must be stored safely. In addition, decryption processes can be computationally complex and therefore demand a lot of system processor time. It is therefore known to provide cryptographic acceleration processors, or more generally, cryptographic hardware. Such hardware is used to provide a secure storage area for keys which is separate from the rest of a computer's hardware. In addition, because a processor is dedicated to cryptographic processes, less demand is made of the other resources of the computing device.
In order for any cryptographic system to be secure, access to the keys, and the cryptographic hardware in general, must be controlled. One system which is known from the prior art is shown in FIG. 1.
FIG. 1 shows a cryptographic device driver 100, which includes a physical device driver (PDD) 101 and a logical device driver (LDD) 102. The cryptographic device driver is typically part of the operating system kernel. The operating system kernel is restricted from access by certain user side applications and is said to run in privileged mode. The cryptographic device driver 100 is the interface between the cryptographic acceleration processor (not shown) and higher level software. The PDD/LDD arrangement will be familiar to those skilled in the art. In the present case, the LDD 102 provides the actual interface to higher layers of the OS.
Also shown in FIG. 1 is a dedicated cryptography server 103. This server sits above the kernel in user space and is said to run in user mode. Only the dedicated cryptography server 103 is allowed to talk to the LDD 102. The LDD 102 will not allow any other executable or process to access it. Therefore, any attempt by malicious code to directly access the LDD 102 will fail. Any legitimate application (e.g. application 104) wishing to gain access to a key must do so via the dedicated cryptography server 103. The dedicated cryptography server 103 is therefore responsible for access control. The access control may be achieved using, for example, capabilities, as discussed further below. In order for data to be, for example, decrypted, it must be copied from the application 104 to the dedicated cryptography server 103. Once the data is copied, the dedicated cryptography server 103 is responsible for carrying out the cryptographic operation. Once the result of the operation is determined, the data is copied back to the application 104.
As can be seen, the security policies for the cryptographic system are controlled by the dedicated cryptographic server 103. The main problem with this mechanism is that any data which is to be subjected to cryptographic processing must be copied to and from the dedicated cryptography server 103. This can be a resource-intensive procedure.
Another system known from the prior art is shown in FIG. 2. Here, the cryptographic device driver 100 includes the same PDD 102 and LDD 102 as shown in FIG. 1. In this system, an application 105 communicates directly with the LDD 102. The cryptographic device driver controls the security policies of the cryptographic system.
The main problem with such a system is that there is generally not enough memory space in the cryptographic hardware for security policies to be stored. Therefore, it is impossible for complex security policies to be implemented with such a system. Also, because the security policies are stored in the cryptographic hardware, modification and expansion of the security policy is more difficult than would be the case with a user space based system, such as the dedicated cryptographic server described above.
Another mechanism for implementing a cryptographic security model is to limit the cryptographic operations to specific processes, such as the media player. Such techniques tend to be used with closed devices where third parties cannot develop and install their own software. Such systems are not flexible at all and the cryptographic operations cannot be extended to other applications.
There is therefore a need for an improved system for managing cryptographic security policies.